perm filename FLSCH.MF[MF,DEK] blob
sn#756287 filedate 1984-05-26 generic text, type T, neo UTF8
let xmult=xscaled; let ymult=yscaled;
def tracingall=tracingcommands:=3;
tracingedges:=1; tracingtitles:=1; tracingequations:=1; tracingspecs:=1;
tracingpens:=1; tracingchoices:=1; tracingstats:=2;
tracingonline:=1;tracingoutput:=1;tracingmacros:=3; xyzzy:=1 enddef;
input bbase;
%sunrules;
N.height = 20 pt;
M.height = 30 pt;
S.height = 20 pt;
W.width = 20 pt;
M.width = 30 pt;
E.width = 20 pt;
pen hpen, vpen, medpen, smallpen;
%tracingall;
thick := 2pt; thin := .4pt;
hpen := pencircle xmult thick ymult thin;
vpen := pencircle xmult thin ymult thick;
medpen := pencircle scaled 2thin;
smallpen := pencircle scaled thin;
loose := .75; tight := 2; % tensions for loops
def sr (expr z,zz) = % S-curve to right
draw z{1,0} .. zz{1,0};
enddef;
def sd (expr z,zz) = % S-curve down
draw z{0,-1} .. zz{0,-1};
enddef;
def loopr (expr z,zz,zzz) = % loop to right
draw z{1,0} .. tension loose and tight .. zz{-1,0}
.. tension tight and loose .. zzz{1,0};
enddef;
def loopd (expr z,zz,zzz) = % loop downward
draw z{0,-1} .. tension loose and tight .. zz{0,1}
.. tension tight and loose .. zzz{0,-1};
enddef;
vardef char.N.M =
defaultpen := hpen;
sr( (0,N.height), (1/2 M.width,0) );
sr( (1/2 M.width,0), (M.width,N.height) );
defaultpen := medpen;
loopr( (0,.2N.height), (.5M.width,.8N.height), (M.width,.2N.height) );
defaultpen := smallpen;
draw (0,.62N.height) .. (M.width,.62N.height);
enddef;
vardef char.N.E =
defaultpen := smallpen;
draw (0, N.height){1,0} .. (E.width, 0){0,-1};
draw (0, .62N.height){1,0} .. (.62E.width, 0){0,-1};
defaultpen := medpen;
draw (0,.2N.height){1,0} .. tension loose and tight
.. (.6E.width,.6N.height){-1,1} .. tension tight and loose
.. (.2E.width,0){0,-1};
enddef;
vardef char.M.E =
defaultpen := vpen;
sd( (E.width,M.height), (0,1/2 M.height) );
sd( (0,1/2 M.height), (E.width,0) );
defaultpen := medpen;
loopd( (.2E.width,M.height), (.8E.width,.5M.height), (.2E.width,0) );
defaultpen := smallpen;
draw (.62E.width,M.height) .. (.62E.width,0);
enddef;
vardef char.S.E =
defaultpen := smallpen;
draw (E.width,S.height){0,-1} .. (0,0){-1,0};
draw (.62E.width,S.height){0,-1} .. (0,.38S.height){-1,0};
defaultpen := medpen;
draw (.2E.width,S.height){0,-1} .. tension loose and tight
.. (.6E.width,.4S.height){1,1} .. tension tight and loose
.. (0,.8S.height){-1,0};
enddef;
vardef char.S.M =
defaultpen := hpen;
sr( (0,0), (1/2 M.width,S.height) );
sr( (1/2 M.width,S.height), (M.width,0) );
defaultpen := medpen;
loopr( (0,.8S.height), (.5M.width,.2S.height), (M.width,.8S.height) );
defaultpen := smallpen;
draw (0,.38S.height) .. (M.width,.38S.height);
enddef;
vardef char.S.W =
defaultpen := smallpen;
draw (0, S.height){0,-1} .. (W.width, 0){1,0};
draw (.38W.width,S.height){0,-1} .. (W.width, .38S.height){1,0};
defaultpen := medpen;
draw (.8W.width,S.height){0,-1} .. tension loose and tight
.. (.4W.width,.4S.height){-1,1} .. tension tight and loose
.. (W.width,.8S.height){1,0};
enddef;
vardef char.M.W =
defaultpen := vpen;
sd( (0,M.height), (W.width,1/2 M.height) );
sd( (W.width,1/2 M.height), (0,0) );
defaultpen := medpen;
loopd( (.8W.width,M.height), (.2W.width,.5M.height), (.8W.width,0) );
defaultpen := smallpen;
draw (.38E.width,M.height) .. (.38E.width,0);
enddef;
vardef char.N.W =
defaultpen := smallpen;
draw (W.width,N.height){-1,0} .. (0,0){0,-1};
draw (W.width,.62N.height){-1,0} .. (.38W.width,0){0,-1};
defaultpen := medpen;
draw (W.width,.2N.height){-1,0} .. tension loose and tight
.. (.4W.width,.6N.height){1,1} .. tension tight and loose
.. (.8W.width,0){0,-1};
enddef;
test N.M;
%test N.E;
%test M.E;
%test S.E;
%test S.M;
%test S.W;
%test M.W;
%test N.W;
end